﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SGPFWebApp.Controlos.Tipos;
using DTO.Projectos;

namespace SGPFWebApp.Controlos
{
    public partial class VisualizadorProjectos : System.Web.UI.UserControl
    {

        private TipoDeVisualizacao _visualizacaoCorrente = TipoDeVisualizacao.Lista;

        public static string QueryStringParameterName = "projectoId";


        public ObterProjectoDelegate ObterProjectoFunc { get; set; }
        public ObterProjectosDelegate ObterProjectosNoEstadoFunc { get; set; }
        public System.Web.UI.Control ProjectDetailsControl { get; set; }
        public TipoDeVisualizacao VisualizacaoCorrente { get { return _visualizacaoCorrente; } }

        public bool SearchDetail { get; set; }
        public bool ShowList { get; set; }

        public int ProjectoID { 
            get {
                return projectoDetailControl.projectoID;
            } 
        }
        
        private Projecto projecto;
        public Projecto Projecto { get { return projecto; } }

        protected void Page_Load(object sender, EventArgs e)
        {
            string isListar = Request.QueryString[QueryStringParameterName];
            if (!IsPostBack || SearchDetail)
            {
                string projId = Request.QueryString[QueryStringParameterName];
                if (!string.IsNullOrEmpty(projId))
                {
                    _visualizacaoCorrente = TipoDeVisualizacao.DetalheProjecto;
                    projecto = ObterProjectoFunc(int.Parse(projId));
                }
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            if (projecto != null && !ShowList)
            {
                projectoDetailControl.Projecto = projecto;
                projectoDetailControl.Visible = true;
                projectsListControl.Visible = false;
                _visualizacaoCorrente = TipoDeVisualizacao.DetalheProjecto;
            }
            else
            {
                IEnumerable<Projecto> projectos = ObterProjectosNoEstadoFunc();
                projectsListControl.QueryStringParamName = QueryStringParameterName;
                projectsListControl.Projectos = projectos.ToList();

                projectoDetailControl.Visible = false;
                projectsListControl.Visible = true;
                _visualizacaoCorrente = TipoDeVisualizacao.Lista;
            }

            if (ProjectDetailsControl != null)
                ProjectDetailsControl.Visible = VisualizacaoCorrente == TipoDeVisualizacao.DetalheProjecto ? true : false;

        }
    }
}